<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html><head><title>Programming in Lua : 11</title>
<link rel="stylesheet" type="text/css" href="pil.css">
</head>
<body>
<p class="warning">
<A HREF="contents.html"><IMG TITLE="Programming in Lua (first edition)" SRC="capa.jpg" ALT="" ALIGN="left"></A>This first edition was written for Lua 5.0. While still largely relevant for later versions, there are some differences.<BR>The third edition targets Lua 5.2 and is available at <A HREF="http://www.amazon.com/exec/obidos/ASIN/859037985X/theprogrammil3-20">Amazon</A> and other bookstores.<BR>By buying the book, you also help to <A HREF="../donations.html">support the Lua project</A>.
</p>
<table width="100%" class="nav">
<tr>
<td width="10%" align="left"><a href="10.2.html"><img border="0" src="left.png" alt="Previous"></a></td>
<td width="80%" align="center"><a href="contents.html"><font face="Helvetica,Arial,sanserif">
<font color="gray">Programming in </font><font color="blue"> Lua</font>
</font></a></td>
<td width="10%" align="right"><a href="11.1.html"><img border="0" src="right.png" alt="Next"></a></td>
</tr>
<tr>
<td width="10%" align="left"></td>
<td width="80%" align="center"><a href="contents.html#P2">Part II. Tables and Objects</a>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="contents.html#11">Chapter 11. Data Structures</a></td>
<td width="10%" align="right"></td></tr>
</table>
<hr/>
<a name="DataStructure"><h1>11 &ndash; Data Structures</h1></a>

<p>


<p>Tables in Lua are not a data structure;
they are <em>the</em> data structure.
All structures that other languages offer---arrays,
records, lists, queues, sets---are
represented with tables in Lua.
More to the point,
tables implement all these structures efficiently.

<p>In traditional languages, such as C and Pascal,
we implement most data structures with arrays and lists
(where lists = records + pointers).
Although we can implement arrays and lists using
Lua tables (and sometimes we do that),
tables are more powerful than arrays and lists;
many algorithms are simplified to the point of triviality with
the use of tables.
For instance, you seldom write a search in Lua,
because tables offer direct access to any type.

<p>It takes a while to learn how to use tables efficiently.
Here, we will show how you can implement
typical data structures with tables
and will provide some examples of their use.
We will start with arrays and lists,
not because we need them for the other structures,
but because most programmers are already familiar with them.
We have already seen the basics of this material in our
chapters about the language,
but I will repeat it here for completeness.

<hr/>
<table width="100%" class="nav">
<tr valign="top">
<td width="90%" align="left">
<small>
  Copyright &copy; 2003&ndash;2004 Roberto Ierusalimschy.  All rights reserved.
</small>
</td>
<td width="10%" align="right"><a href="11.1.html"><img border="0" src="right.png" alt="Next"></a></td>
</tr>
</table>


</body></html>

